# Django tree menu #
### приложение Django, которое выводит древовидное меню ###
Простое Django приложение для отрисовки древовидного меню, реализованное через templatetag. 
Меню и его элементы создаются и редактируются в админ панели Django. 
С помощью тега `{% draw_menu 'menu_name' %}` меню можно расположить на любой странице приложения.

## Задача ##
1. Меню реализовано через template tag
2. Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
3. Хранится в БД.
4. Редактируется в стандартной админке Django.
5. Активный пункт меню определяется исходя из URL текущей страницы.
6. Меню на одной странице может быть несколько. Они определяются по названию.
7. При клике на меню происходит переход по заданному в нем URL. URL может быть задан как явным образом, так и через named url.
8. На отрисовку каждого меню требуется ровно 1 запрос к БД.

##  Запуск ##
для запуска приложения необходимо:
1. Клонировать репозиторий и перейти в каталог проекта `git clone git@github.com:AlexMuller45/UpTrader.git`
2. При необходимости, установить Poetry `pip install poetry` 
3. Запустить виртуальное окружение `poetry shell`
4. Установить зависимости `poetry install`
5. Запустить сервер `python manage.py runserver`

учетные данные для тестовой БД: `Username: Admin, Password:  admin`

при отсутствии файла `db.sqlite3` необходимо до запуска сервера (п.5) выполнить следующие шаги:
1. Выполнить миграции `python manage.py migrate`
2. Создать администратора БД `python manage.py createsuperuser`
3. Выполнить наполнение БД тестовыми данными `python fill_menu_db.py`


## Стек ##
1. python = "^3.11"
2. django = "^4.2.7"

## Лицензия ##
MIT License